0 Prolog
↳1 PrologToPrologProblemTransformerProof (⇒, 76 ms)
↳2 Prolog
↳3 PrologToPiTRSProof (⇒, 0 ms)
↳4 PiTRS
↳5 DependencyPairsProof (⇔, 12 ms)
↳6 PiDP
↳7 DependencyGraphProof (⇔, 0 ms)
↳8 PiDP
↳9 UsableRulesProof (⇔, 0 ms)
↳10 PiDP
↳11 PiDPToQDPProof (⇒, 35 ms)
↳12 QDP
↳13 UsableRulesReductionPairsProof (⇔, 115 ms)
↳14 QDP
↳15 MRRProof (⇔, 0 ms)
↳16 QDP
↳17 PisEmptyProof (⇔, 0 ms)
↳18 YES
flatA_in_ga(niltree, nil) → flatA_out_ga(niltree, nil)
flatA_in_ga(tree(T18, niltree, T19), cons(T18, T9)) → U1_ga(T18, T19, T9, flatA_in_ga(T19, T9))
flatA_in_ga(tree(T69, tree(T68, niltree, T70), T71), cons(T68, T59)) → U2_ga(T69, T68, T70, T71, T59, flatA_in_ga(tree(T69, T70, T71), T59))
flatA_in_ga(tree(T92, tree(T88, tree(T89, T90, T91), T93), T94), T96) → U3_ga(T92, T88, T89, T90, T91, T93, T94, T96, flatA_in_ga(tree(T89, T90, tree(T88, T91, tree(T92, T93, T94))), T96))
U3_ga(T92, T88, T89, T90, T91, T93, T94, T96, flatA_out_ga(tree(T89, T90, tree(T88, T91, tree(T92, T93, T94))), T96)) → flatA_out_ga(tree(T92, tree(T88, tree(T89, T90, T91), T93), T94), T96)
U2_ga(T69, T68, T70, T71, T59, flatA_out_ga(tree(T69, T70, T71), T59)) → flatA_out_ga(tree(T69, tree(T68, niltree, T70), T71), cons(T68, T59))
U1_ga(T18, T19, T9, flatA_out_ga(T19, T9)) → flatA_out_ga(tree(T18, niltree, T19), cons(T18, T9))
Infinitary Constructor Rewriting Termination of PiTRS implies Termination of Prolog
flatA_in_ga(niltree, nil) → flatA_out_ga(niltree, nil)
flatA_in_ga(tree(T18, niltree, T19), cons(T18, T9)) → U1_ga(T18, T19, T9, flatA_in_ga(T19, T9))
flatA_in_ga(tree(T69, tree(T68, niltree, T70), T71), cons(T68, T59)) → U2_ga(T69, T68, T70, T71, T59, flatA_in_ga(tree(T69, T70, T71), T59))
flatA_in_ga(tree(T92, tree(T88, tree(T89, T90, T91), T93), T94), T96) → U3_ga(T92, T88, T89, T90, T91, T93, T94, T96, flatA_in_ga(tree(T89, T90, tree(T88, T91, tree(T92, T93, T94))), T96))
U3_ga(T92, T88, T89, T90, T91, T93, T94, T96, flatA_out_ga(tree(T89, T90, tree(T88, T91, tree(T92, T93, T94))), T96)) → flatA_out_ga(tree(T92, tree(T88, tree(T89, T90, T91), T93), T94), T96)
U2_ga(T69, T68, T70, T71, T59, flatA_out_ga(tree(T69, T70, T71), T59)) → flatA_out_ga(tree(T69, tree(T68, niltree, T70), T71), cons(T68, T59))
U1_ga(T18, T19, T9, flatA_out_ga(T19, T9)) → flatA_out_ga(tree(T18, niltree, T19), cons(T18, T9))
FLATA_IN_GA(tree(T18, niltree, T19), cons(T18, T9)) → U1_GA(T18, T19, T9, flatA_in_ga(T19, T9))
FLATA_IN_GA(tree(T18, niltree, T19), cons(T18, T9)) → FLATA_IN_GA(T19, T9)
FLATA_IN_GA(tree(T69, tree(T68, niltree, T70), T71), cons(T68, T59)) → U2_GA(T69, T68, T70, T71, T59, flatA_in_ga(tree(T69, T70, T71), T59))
FLATA_IN_GA(tree(T69, tree(T68, niltree, T70), T71), cons(T68, T59)) → FLATA_IN_GA(tree(T69, T70, T71), T59)
FLATA_IN_GA(tree(T92, tree(T88, tree(T89, T90, T91), T93), T94), T96) → U3_GA(T92, T88, T89, T90, T91, T93, T94, T96, flatA_in_ga(tree(T89, T90, tree(T88, T91, tree(T92, T93, T94))), T96))
FLATA_IN_GA(tree(T92, tree(T88, tree(T89, T90, T91), T93), T94), T96) → FLATA_IN_GA(tree(T89, T90, tree(T88, T91, tree(T92, T93, T94))), T96)
flatA_in_ga(niltree, nil) → flatA_out_ga(niltree, nil)
flatA_in_ga(tree(T18, niltree, T19), cons(T18, T9)) → U1_ga(T18, T19, T9, flatA_in_ga(T19, T9))
flatA_in_ga(tree(T69, tree(T68, niltree, T70), T71), cons(T68, T59)) → U2_ga(T69, T68, T70, T71, T59, flatA_in_ga(tree(T69, T70, T71), T59))
flatA_in_ga(tree(T92, tree(T88, tree(T89, T90, T91), T93), T94), T96) → U3_ga(T92, T88, T89, T90, T91, T93, T94, T96, flatA_in_ga(tree(T89, T90, tree(T88, T91, tree(T92, T93, T94))), T96))
U3_ga(T92, T88, T89, T90, T91, T93, T94, T96, flatA_out_ga(tree(T89, T90, tree(T88, T91, tree(T92, T93, T94))), T96)) → flatA_out_ga(tree(T92, tree(T88, tree(T89, T90, T91), T93), T94), T96)
U2_ga(T69, T68, T70, T71, T59, flatA_out_ga(tree(T69, T70, T71), T59)) → flatA_out_ga(tree(T69, tree(T68, niltree, T70), T71), cons(T68, T59))
U1_ga(T18, T19, T9, flatA_out_ga(T19, T9)) → flatA_out_ga(tree(T18, niltree, T19), cons(T18, T9))
FLATA_IN_GA(tree(T18, niltree, T19), cons(T18, T9)) → U1_GA(T18, T19, T9, flatA_in_ga(T19, T9))
FLATA_IN_GA(tree(T18, niltree, T19), cons(T18, T9)) → FLATA_IN_GA(T19, T9)
FLATA_IN_GA(tree(T69, tree(T68, niltree, T70), T71), cons(T68, T59)) → U2_GA(T69, T68, T70, T71, T59, flatA_in_ga(tree(T69, T70, T71), T59))
FLATA_IN_GA(tree(T69, tree(T68, niltree, T70), T71), cons(T68, T59)) → FLATA_IN_GA(tree(T69, T70, T71), T59)
FLATA_IN_GA(tree(T92, tree(T88, tree(T89, T90, T91), T93), T94), T96) → U3_GA(T92, T88, T89, T90, T91, T93, T94, T96, flatA_in_ga(tree(T89, T90, tree(T88, T91, tree(T92, T93, T94))), T96))
FLATA_IN_GA(tree(T92, tree(T88, tree(T89, T90, T91), T93), T94), T96) → FLATA_IN_GA(tree(T89, T90, tree(T88, T91, tree(T92, T93, T94))), T96)
flatA_in_ga(niltree, nil) → flatA_out_ga(niltree, nil)
flatA_in_ga(tree(T18, niltree, T19), cons(T18, T9)) → U1_ga(T18, T19, T9, flatA_in_ga(T19, T9))
flatA_in_ga(tree(T69, tree(T68, niltree, T70), T71), cons(T68, T59)) → U2_ga(T69, T68, T70, T71, T59, flatA_in_ga(tree(T69, T70, T71), T59))
flatA_in_ga(tree(T92, tree(T88, tree(T89, T90, T91), T93), T94), T96) → U3_ga(T92, T88, T89, T90, T91, T93, T94, T96, flatA_in_ga(tree(T89, T90, tree(T88, T91, tree(T92, T93, T94))), T96))
U3_ga(T92, T88, T89, T90, T91, T93, T94, T96, flatA_out_ga(tree(T89, T90, tree(T88, T91, tree(T92, T93, T94))), T96)) → flatA_out_ga(tree(T92, tree(T88, tree(T89, T90, T91), T93), T94), T96)
U2_ga(T69, T68, T70, T71, T59, flatA_out_ga(tree(T69, T70, T71), T59)) → flatA_out_ga(tree(T69, tree(T68, niltree, T70), T71), cons(T68, T59))
U1_ga(T18, T19, T9, flatA_out_ga(T19, T9)) → flatA_out_ga(tree(T18, niltree, T19), cons(T18, T9))
FLATA_IN_GA(tree(T69, tree(T68, niltree, T70), T71), cons(T68, T59)) → FLATA_IN_GA(tree(T69, T70, T71), T59)
FLATA_IN_GA(tree(T18, niltree, T19), cons(T18, T9)) → FLATA_IN_GA(T19, T9)
FLATA_IN_GA(tree(T92, tree(T88, tree(T89, T90, T91), T93), T94), T96) → FLATA_IN_GA(tree(T89, T90, tree(T88, T91, tree(T92, T93, T94))), T96)
flatA_in_ga(niltree, nil) → flatA_out_ga(niltree, nil)
flatA_in_ga(tree(T18, niltree, T19), cons(T18, T9)) → U1_ga(T18, T19, T9, flatA_in_ga(T19, T9))
flatA_in_ga(tree(T69, tree(T68, niltree, T70), T71), cons(T68, T59)) → U2_ga(T69, T68, T70, T71, T59, flatA_in_ga(tree(T69, T70, T71), T59))
flatA_in_ga(tree(T92, tree(T88, tree(T89, T90, T91), T93), T94), T96) → U3_ga(T92, T88, T89, T90, T91, T93, T94, T96, flatA_in_ga(tree(T89, T90, tree(T88, T91, tree(T92, T93, T94))), T96))
U3_ga(T92, T88, T89, T90, T91, T93, T94, T96, flatA_out_ga(tree(T89, T90, tree(T88, T91, tree(T92, T93, T94))), T96)) → flatA_out_ga(tree(T92, tree(T88, tree(T89, T90, T91), T93), T94), T96)
U2_ga(T69, T68, T70, T71, T59, flatA_out_ga(tree(T69, T70, T71), T59)) → flatA_out_ga(tree(T69, tree(T68, niltree, T70), T71), cons(T68, T59))
U1_ga(T18, T19, T9, flatA_out_ga(T19, T9)) → flatA_out_ga(tree(T18, niltree, T19), cons(T18, T9))
FLATA_IN_GA(tree(T69, tree(T68, niltree, T70), T71), cons(T68, T59)) → FLATA_IN_GA(tree(T69, T70, T71), T59)
FLATA_IN_GA(tree(T18, niltree, T19), cons(T18, T9)) → FLATA_IN_GA(T19, T9)
FLATA_IN_GA(tree(T92, tree(T88, tree(T89, T90, T91), T93), T94), T96) → FLATA_IN_GA(tree(T89, T90, tree(T88, T91, tree(T92, T93, T94))), T96)
FLATA_IN_GA(tree(T69, tree(T68, niltree, T70), T71)) → FLATA_IN_GA(tree(T69, T70, T71))
FLATA_IN_GA(tree(T18, niltree, T19)) → FLATA_IN_GA(T19)
FLATA_IN_GA(tree(T92, tree(T88, tree(T89, T90, T91), T93), T94)) → FLATA_IN_GA(tree(T89, T90, tree(T88, T91, tree(T92, T93, T94))))
No rules are removed from R.
FLATA_IN_GA(tree(T69, tree(T68, niltree, T70), T71)) → FLATA_IN_GA(tree(T69, T70, T71))
FLATA_IN_GA(tree(T18, niltree, T19)) → FLATA_IN_GA(T19)
POL(FLATA_IN_GA(x1)) = 2·x1
POL(niltree) = 0
POL(tree(x1, x2, x3)) = 2·x1 + 2·x2 + x3
FLATA_IN_GA(tree(T92, tree(T88, tree(T89, T90, T91), T93), T94)) → FLATA_IN_GA(tree(T89, T90, tree(T88, T91, tree(T92, T93, T94))))
FLATA_IN_GA(tree(T92, tree(T88, tree(T89, T90, T91), T93), T94)) → FLATA_IN_GA(tree(T89, T90, tree(T88, T91, tree(T92, T93, T94))))
POL(FLATA_IN_GA(x1)) = 2·x1
POL(tree(x1, x2, x3)) = 2 + 2·x1 + 2·x2 + x3